package com.xiaoshuidi.cloud.module.finance.dal.dataobject.finance;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.xiaoshuidi.cloud.framework.tenant.core.db.TenantBaseDO;
import com.xiaoshuidi.cloud.module.finance.enums.finance.FinanceAccountTypeSourceEnum;
import com.xiaoshuidi.cloud.module.finance.enums.finance.FinanceAccountWithdrawResultEnum;
import com.xiaoshuidi.cloud.module.finance.enums.finance.FinanceCustomerTypeEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import java.time.LocalDateTime;

@TableName(value = "finance_account_withdraw", autoResultMap = true)
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class FinanceAccountWithdrawDO extends TenantBaseDO {
    @TableId
    private Integer id;
    /**
     * 提现账户id
     */
    @Schema(description = "提现账户id")
    private Integer accountId;
    /**
     * 提现custId
     */
    @Schema(description = "提现custId")
    private String custId;
    /**
     * 提现custType
     * {@link FinanceCustomerTypeEnum}
     */
    @Schema(description = "提现custType")
    private String custType;
    /**
     * 申请编号
     */
    @Schema(description = "申请编号")
    private String number;
    /**
     * 企业id
     */
    @Schema(description = "企业id")
    private Integer companyId;
    /**
     * 企业名
     */
    @Schema(description = "企业名")
    private String companyName;
    /**
     * 门店id
     */
    @Schema(description = "门店id")
    private Integer apartmentId;
    /**
     * 门店名
     */
    @Schema(description = "门店名")
    private String apartmentName;
    /**
     * 房间id
     */
    @Schema(description = "房间id")
    private Long roomId;
    /**
     * 房间名
     */
    @Schema(description = "房间名")
    private String roomName;
    /**
     * 提现前余额
     */
    @Schema(description = "提现前余额")
    private java.math.BigDecimal beginningBalance;
    /**
     * 提现后余额
     */
    @Schema(description = "提现后余额")
    private java.math.BigDecimal endingBalance;
    /**
     * 发起提现会员id
     */
    @Schema(description = "发起提现会员id")
    private Long applyMemberId;
    /**
     * 发起提现会员名
     */
    @Schema(description = "发起提现会员名")
    private String applyMemberName;
    /**
     * 发起提现会员手机
     */
    @Schema(description = "发起提现会员手机")
    private String applyMemberPhone;
    /**
     * 提现金额
     */
    @Schema(description = "提现金额")
    private java.math.BigDecimal amount;
    /**
     * 发起提现会员id
     */
    @Schema(description = "发起提现会员id")
    private Long reviewMemberId;
    /**
     * 发起提现会员名
     */
    @Schema(description = "发起提现会员名")
    private String reviewMemberName;
    /**
     * 发起提现会员手机
     */
    @Schema(description = "发起提现会员手机")
    private String reviewMemberPhone;
    /**
     * 意见(AGREE/REJECT)
     * {@link  FinanceAccountWithdrawResultEnum}
     */
    @Schema(description = "意见(AGREE/REJECT)")
    private String result;
    /**
     * 备注
     */
    @Schema(description = "备注")
    private String remark;
    /**
     * 工作流id
     */
    @Schema(description = "工作流id")
    private String processInstanceId;
    /**
     * 发起APPLY/同住人审核REVIEW
     */
    @Schema(description = "发起APPLY/同住人审核REVIEW")
    private String type;
    /**
     * 收款人
     */
    @Schema(description = "收款人")
    private String payeeName;
    /**
     * 收款方手机号
     */
    @Schema(description = "收款方手机号")
    private String payeeMobile;
    /**
     * 收款银行名
     */
    @Schema(description = "收款银行名")
    private String payeeBank;
    /**
     * 收款银行支行名(金蝶维护)
     */
    @Schema(description = "收款银行支行名(金蝶维护)")
    private String payeeBankBranch;
    /**
     * 收款银行行号(金蝶维护)
     */
    @Schema(description = "收款银行行号(金蝶维护)")
    private String payeeBankCode;
    /**
     * 收款银行所在省(金蝶维护)
     */
    @Schema(description = "收款银行所在省(金蝶维护)")
    private String payeeBankProvince;
    /**
     * 收款银行所在市
     */
    @Schema(description = "收款银行所在市")
    private String payeeBankCity;
    /**
     * 收款账号
     */
    @Schema(description = "收款账号")
    private String payeeBankAccount;
    /**
     * 发起申请的id
     */
    @Schema(description = "发起申请的id")
    private Integer refId;
    /**
     * 同意提现时间
     */
    @Schema(description = "同意提现时间")
    private LocalDateTime agreeTime;
    /**
     * 确认去付款时间
     */
    @Schema(description = "确认去付款时间")
    private LocalDateTime confirmTime;


    /**
     * 企业联系人名称
     */
    private String companyContactName;

    /**
     * 企业联系人手机号
     */
    private String companyContactPhone;

    /**
     * 附件
     */
    private String attachment;

    /**
     * 来源
     * {@link FinanceAccountTypeSourceEnum}
     */
    private String source;

    /**
     * 付款成功日期
     */
    private LocalDateTime payTime;
}
